package com.yanqu.road.entity.activity.daomu.config;

import com.yanqu.road.entity.activity.daomu.enums.DaoMuAttributeEnum;
import com.yanqu.road.entity.config.system.NormalWeightItem;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * pvp通用配置
 * 解析后的配置
 */
public class DaoMuPvpCommonConfig {

    /**
     * 报名人数上限
     */
    private int numLimit;

    /**
     * 活动报名开始时间    单位秒
     */
    private int enterNameStartTime;

    /**
     * 活动报名结束时间  单位秒
     */
    private int enterNameEndTime;

    /**
     * 活动持续开始时间  单位秒
     */
    private int pvpContinuedStartTime;

    /**
     * 活动持续结束时间  单位秒
     */
    private int pvpContinuedEndTime;

    /**
     * 初始复活cd
     */
    private int baseReviveCd;

    /**
     * 递增复活cd
     */
    private int addReviveCd;

    /**
     * 最大复活cd
     */
    private int maxReviveCd;

    /**
     * 宝箱里爆出的道具/死亡掉落的消失时间/s
     */
    private int goodsDisappearTime;


    /**
     * 初始属性map
     */
    private Map<DaoMuAttributeEnum, Long> initAttributeMap = new HashMap<>();

    /**
     * 最大属性map
     */
    private Map<DaoMuAttributeEnum, Long> maxAttributeMap = new HashMap<>();

    /**
     * 单房间怪物数量
     */
    private int mobsNum;

    /**
     * 玩家仇恨目标数量最大值
     */
    private int mobsHateTargetNumMax;

    /**
     * 怪物仇恨目标刷新时间
     */
    private int mobsHateTargetRefreshTime;

    /**
     * 技能权重
     */
    private List<NormalWeightItem> skillPoolWeights = new ArrayList<>();

    /**
     * 复活保护时间
     */
    private int protectCd;

    /**
     * 击杀xxx级以上的大佬
     */
    private int noticeSingleKill;

    /**
     * 1条命内击杀a人
     */
    private List<Integer> noticeOneLifeKillNum = new ArrayList<>();

    /**
     * 1轮pvp内击杀a人
     */
    private List<Integer> noticeOneGameKillNum = new ArrayList<>();

    /**
     * xx层距离多少s将自动坍塌
     */
    private Map<Integer, List<Integer>> noticeCollapseTime = new HashMap<>();

    /**
     * xxx层提前坍塌人数
     */
    private Map<Integer, List<Integer>> noticeCollapseNum = new HashMap<>();

    /**
     * xxx名进入xx层开启淘汰模式
     */
    private Map<Integer, Integer> noticeDisuseNum = new HashMap<>();

    /**
     * 公告数量上限
     */
    private int noticeMaxNum;

    /**
     * 初始角色id
     */
    private int initRoleId;

    /**
     * 房间宽度
     */
    private double roomMaxWidth;

    /**
     * 房间高度
     */
    private double roomMaxHeight;

    /**
     * 宝箱区域宽度
     */
    private double boxAreaWidth;

    /**
     * 宝箱区域高度
     */
    private double boxAreaHeight;

    /**
     * 边缘间隙多少像素不刷物资
     */
    private double roomSideSize;

    /**
     * 出生点半径
     */
    private double birthRadius;

    /**
     * 房间收圈半径
     */
    private double roomShrinkRadius;

    /**
     * 宝箱掉落半径
     */
    private double boxDropRadius;

    /**
     * 怪物掉落半径
     */
    private double monsterDropRadius;

    /**
     * 角色死亡掉落半径
     */
    private double roleDropRadius;

    /**
     * pvp死亡掉落
     */
    private String pvpDropsHpItem;

    public DaoMuPvpCommonConfig() {

    }

    public int getBaseReviveCd() {
        return baseReviveCd;
    }

    public void setBaseReviveCd(int baseReviveCd) {
        this.baseReviveCd = baseReviveCd;
    }

    public int getAddReviveCd() {
        return addReviveCd;
    }

    public void setAddReviveCd(int addReviveCd) {
        this.addReviveCd = addReviveCd;
    }

    public int getMaxReviveCd() {
        return maxReviveCd;
    }

    public void setMaxReviveCd(int maxReviveCd) {
        this.maxReviveCd = maxReviveCd;
    }

    public int getNumLimit() {
        return numLimit;
    }

    public void setNumLimit(int numLimit) {
        this.numLimit = numLimit;
    }

    public int getEnterNameStartTime() {
        return enterNameStartTime;
    }

    public void setEnterNameStartTime(int enterNameStartTime) {
        this.enterNameStartTime = enterNameStartTime;
    }

    public int getEnterNameEndTime() {
        return enterNameEndTime;
    }

    public void setEnterNameEndTime(int enterNameEndTime) {
        this.enterNameEndTime = enterNameEndTime;
    }

    public int getPvpContinuedStartTime() {
        return pvpContinuedStartTime;
    }

    public void setPvpContinuedStartTime(int pvpContinuedStartTime) {
        this.pvpContinuedStartTime = pvpContinuedStartTime;
    }

    public int getPvpContinuedEndTime() {
        return pvpContinuedEndTime;
    }

    public void setPvpContinuedEndTime(int pvpContinuedEndTime) {
        this.pvpContinuedEndTime = pvpContinuedEndTime;
    }

    public int getGoodsDisappearTime() {
        return goodsDisappearTime;
    }

    public void setGoodsDisappearTime(int goodsDisappearTime) {
        this.goodsDisappearTime = goodsDisappearTime;
    }

    public Map<DaoMuAttributeEnum, Long> getInitAttributeMap() {
        return initAttributeMap;
    }

    public void setInitAttributeMap(Map<DaoMuAttributeEnum, Long> initAttributeMap) {
        this.initAttributeMap = initAttributeMap;
    }

    public Map<DaoMuAttributeEnum, Long> getMaxAttributeMap() {
        return maxAttributeMap;
    }

    public void setMaxAttributeMap(Map<DaoMuAttributeEnum, Long> maxAttributeMap) {
        this.maxAttributeMap = maxAttributeMap;
    }

    public int getMobsNum() {
        return mobsNum;
    }

    public void setMobsNum(int mobsNum) {
        this.mobsNum = mobsNum;
    }

    public int getMobsHateTargetNumMax() {
        return mobsHateTargetNumMax;
    }

    public void setMobsHateTargetNumMax(int mobsHateTargetNumMax) {
        this.mobsHateTargetNumMax = mobsHateTargetNumMax;
    }

    public int getMobsHateTargetRefreshTime() {
        return mobsHateTargetRefreshTime;
    }

    public void setMobsHateTargetRefreshTime(int mobsHateTargetRefreshTime) {
        this.mobsHateTargetRefreshTime = mobsHateTargetRefreshTime;
    }

    public List<NormalWeightItem> getSkillPoolWeights() {
        return skillPoolWeights;
    }

    public void setSkillPoolWeights(List<NormalWeightItem> skillPoolWeights) {
        this.skillPoolWeights = skillPoolWeights;
    }

    public int getProtectCd() {
        return protectCd;
    }

    public void setProtectCd(int protectCd) {
        this.protectCd = protectCd;
    }

    public int getNoticeSingleKill() {
        return noticeSingleKill;
    }

    public void setNoticeSingleKill(int noticeSingleKill) {
        this.noticeSingleKill = noticeSingleKill;
    }

    public List<Integer> getNoticeOneLifeKillNum() {
        return noticeOneLifeKillNum;
    }

    public void setNoticeOneLifeKillNum(List<Integer> noticeOneLifeKillNum) {
        this.noticeOneLifeKillNum = noticeOneLifeKillNum;
    }

    public List<Integer> getNoticeOneGameKillNum() {
        return noticeOneGameKillNum;
    }

    public void setNoticeOneGameKillNum(List<Integer> noticeOneGameKillNum) {
        this.noticeOneGameKillNum = noticeOneGameKillNum;
    }

    public Map<Integer, List<Integer>> getNoticeCollapseTime() {
        return noticeCollapseTime;
    }

    public void setNoticeCollapseTime(Map<Integer, List<Integer>> noticeCollapseTime) {
        this.noticeCollapseTime = noticeCollapseTime;
    }

    public Map<Integer, List<Integer>> getNoticeCollapseNum() {
        return noticeCollapseNum;
    }

    public void setNoticeCollapseNum(Map<Integer, List<Integer>> noticeCollapseNum) {
        this.noticeCollapseNum = noticeCollapseNum;
    }

    public Map<Integer, Integer> getNoticeDisuseNum() {
        return noticeDisuseNum;
    }

    public void setNoticeDisuseNum(Map<Integer, Integer> noticeDisuseNum) {
        this.noticeDisuseNum = noticeDisuseNum;
    }

    public int getNoticeMaxNum() {
        return noticeMaxNum;
    }

    public void setNoticeMaxNum(int noticeMaxNum) {
        this.noticeMaxNum = noticeMaxNum;
    }

    public int getInitRoleId() {
        return initRoleId;
    }

    public void setInitRoleId(int initRoleId) {
        this.initRoleId = initRoleId;
    }

    public double getRoomMaxWidth() {
        return roomMaxWidth;
    }

    public void setRoomMaxWidth(double roomMaxWidth) {
        this.roomMaxWidth = roomMaxWidth;
    }

    public double getRoomMaxHeight() {
        return roomMaxHeight;
    }

    public void setRoomMaxHeight(double roomMaxHeight) {
        this.roomMaxHeight = roomMaxHeight;
    }

    public double getBoxAreaWidth() {
        return boxAreaWidth;
    }

    public void setBoxAreaWidth(double boxAreaWidth) {
        this.boxAreaWidth = boxAreaWidth;
    }

    public double getBoxAreaHeight() {
        return boxAreaHeight;
    }

    public void setBoxAreaHeight(double boxAreaHeight) {
        this.boxAreaHeight = boxAreaHeight;
    }

    public double getRoomSideSize() {
        return roomSideSize;
    }

    public void setRoomSideSize(double roomSideSize) {
        this.roomSideSize = roomSideSize;
    }

    public double getBirthRadius() {
        return birthRadius;
    }

    public void setBirthRadius(double birthRadius) {
        this.birthRadius = birthRadius;
    }

    public double getRoomShrinkRadius() {
        return roomShrinkRadius;
    }

    public void setRoomShrinkRadius(double roomShrinkRadius) {
        this.roomShrinkRadius = roomShrinkRadius;
    }

    public double getBoxDropRadius() {
        return boxDropRadius;
    }

    public void setBoxDropRadius(double boxDropRadius) {
        this.boxDropRadius = boxDropRadius;
    }

    public double getMonsterDropRadius() {
        return monsterDropRadius;
    }

    public void setMonsterDropRadius(double monsterDropRadius) {
        this.monsterDropRadius = monsterDropRadius;
    }

    public double getRoleDropRadius() {
        return roleDropRadius;
    }

    public void setRoleDropRadius(double roleDropRadius) {
        this.roleDropRadius = roleDropRadius;
    }

    public String getPvpDropsHpItem() {
        return pvpDropsHpItem;
    }

    public void setPvpDropsHpItem(String pvpDropsHpItem) {
        this.pvpDropsHpItem = pvpDropsHpItem;
    }
}
